
上一篇建立了新增用戶頁面,今天要將從頁面讀到的資料寫入MongoDB裡面。
打開"/routes/index.js",加入以下程式:
/* POST to Add User Service */
router.post('/adduser', function(req, res) {
    // Set our internal DB variable
    var db = req.db;
    // Get our form values. These rely on the "name" attributes
    var userName = req.body.username;
    var Email = req.body.email;
    // Set our collection
    var collection = db.get('usercollection');
    // Submit to the DB
    collection.insert({
        "username" : userName,
        "email" : Email
    }, function (err, doc) {
        if (err) {
            // If it failed, return error
            res.send("There was a problem adding the information to the database.");
        }
        else {
            // If it worked, set the header so the address bar doesn't still say /adduser
            res.location("userlist");
            // And forward to success page
            res.redirect("userlist");
        }
    });
});
這部分的程式有兩個重點。第一個是取得form的資料,請看以下兩行:
    var userName = req.body.username;
    var Email = req.body.email;
Form資料的所在位置是"req.body.NAME","NAME"是指HTML中的"name"屬性(attribute)。例如,這裡"req.body.username"對應"name=username"的那個"input"。
第二個重點是將資料寫入MongoDB。取得"colletion"的方法,我們之前講過。寫入資料只要用"collection"的"insert"方法(method)。可以看到"insert"接受兩個參數,前者為寫入的資料;後者為處理錯誤的callback function。
寫入資料的格式依然是JSON,冒號前後分別代表資料庫的欄位(用雙號號表示)與其相應值。
至於錯誤處理也相當直觀,要提醒的是,沒有錯誤的話,這裡會將頁面轉到"userlist",顯示結果。跳轉分兩步,先設定"location",再執行"redirect"。
[image credit: LUIGI MORANTE]